package com.example.test4;

import java.util.List;

import org.apache.http.Header;
import org.apache.http.cookie.Cookie;

import android.common.EndPoints;
import android.common.JsonListRequestHandler;
import android.common.JsonObjectRequestHandler;
import android.common.Models;
import android.common.Models.Persona;
import android.common.Models.Profesor;
import android.common.Models.User;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;

import com.example.test4.dummy.DummyContent;
import com.loopj.android.http.PersistentCookieStore;

/**
 * An activity representing a list of Personas. This activity has different
 * presentations for handset and tablet-size devices. On handsets, the activity
 * presents a list of items, which when touched, lead to a
 * {@link PersonaDetailActivity} representing item details. On tablets, the
 * activity presents the list of items and item details side-by-side using two
 * vertical panes.
 * <p>
 * The activity makes heavy use of fragments. The list of items is a
 * {@link PersonaListFragment} and the item details (if present) is a
 * {@link PersonaDetailFragment}.
 * <p>
 * This activity also implements the required
 * {@link PersonaListFragment.Callbacks} interface to listen for item
 * selections.
 */
public class PersonaListActivity extends FragmentActivity implements
		PersonaListFragment.Callbacks {

	/**
	 * Whether or not the activity is in two-pane mode, i.e. running on a tablet
	 * device.
	 */
	private boolean mTwoPane;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_persona_list);

		if (findViewById(R.id.persona_detail_container) != null) {
			// The detail container view will be present only in the
			// large-screen layouts (res/values-large and
			// res/values-sw600dp). If this view is present, then the
			// activity should be in two-pane mode.
			mTwoPane = true;

			// In two-pane mode, list items should be given the
			// 'activated' state when touched.
			((PersonaListFragment) getSupportFragmentManager()
					.findFragmentById(R.id.persona_list))
					.setActivateOnItemClick(true);
		}

		// TODO: If exposing deep links into your app, handle intents here.
	}

	/**
	 * Callback method from {@link PersonaListFragment.Callbacks} indicating
	 * that the item with the given ID was selected.
	 */
	@Override
	public void onItemSelected(final String id) {
		if (mTwoPane) {
			// In two-pane mode, show the detail view in this activity by
			// adding or replacing the detail fragment using a
			// fragment transaction.
			Bundle arguments = new Bundle();
			PersonaDetailFragment fragment = new PersonaDetailFragment();
			fragment.setArguments(arguments);
			getSupportFragmentManager().beginTransaction()
					.replace(R.id.persona_detail_container, fragment).commit();

		} else {
			// In single-pane mode, simply start the detail activity
			// for the selected item ID.

			EndPoints.UserEP.getPersonasConDocumento(
					DummyContent.ITEM_MAP.get(id).content,
					new JsonListRequestHandler<Models.Persona>() {

						@Override
						public void onSuccess2(int status, Header[] headers,
								List<Persona> result) {
							System.out.println("trajo a la persona!!! id: "
									+ result.get(0).getId());
							Intent detailIntent = new Intent(
									PersonaListActivity.this,
									PersonaDetailActivity.class);
							detailIntent.putExtra("persona", result.get(0));
							startActivity(detailIntent);

						}
					});
		}
	}

	public void login(View view) {
		Intent i = new Intent(this, LoginActivity.class);
		startActivity(i);
	}

	public void showMyInfo(View view) {
		PersistentCookieStore cookieStore = new PersistentCookieStore(
				getApplicationContext());
		List<Cookie> cookies = cookieStore.getCookies();
		System.out.println(cookies);
		Cookie play = null;
		for (Cookie c : cookies)
			if (c.getName().equals("PLAY_SESSION")) {
				EndPoints.UserEP
						.getMyInfo(new JsonObjectRequestHandler<Models.User>() {

							@Override
							public void onSuccess2(int status,
									Header[] headers, User result) {
								EndPoints.ProfesorEP
										.getMyInfo(new JsonObjectRequestHandler<Models.Profesor>() {

											@Override
											public void onSuccess2(int status,
													Header[] headers,
													Profesor result) {
												Intent detailIntent = new Intent(
														PersonaListActivity.this,
														PersonaDetailActivity.class);
												detailIntent.putExtra(
														"persona",
														result.getPersona());
												startActivity(detailIntent);
											}
										});

							}
						});
				break;
			}

	}
}
